﻿using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Data.OracleClient;
using System.Web.Configuration;
using WebSite.Seguridad;
using MySql.Data.MySqlClient;
using Microsoft.AnalysisServices.AdomdClient;

namespace WebSite
{
	[WebService]
	// Para permitir que se llame a este servicio web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente. 
	// [System.Web.Script.Services.ScriptService]
	public class WebService : SecureWebService
	{

		[WebMethod(Description = "Devuelve los datos de todos los indicadores del grupo determinado")]
		[SoapHeader("AuthenticationCredentials")]
        public Resultado[] GetInfoIndicadores(string idGrupo)  //en realidad es Indicador[]
		{
			if (AutenticarUsuario(AuthenticationCredentials)){
			   Resultado[] valores=null;
				Manager m = new Manager(WebConfigurationManager.ConnectionStrings["StrConexionServidor"].ConnectionString);
                if (m.Pertenece(idGrupo, AuthenticationCredentials.usuario))
                     valores = m.GetValores(idGrupo);
				return valores;
				
            }
            else
                return null;

		}

        [WebMethod(Description = "Devuelve los datos de todos los indicadores pedidos del grupo determinado")]
        [SoapHeader("AuthenticationCredentials")]
        public Resultado[] GetInfoListaIndicadores(string idGrupo, string[] indicadores)  //son los NOMBRES de los indicadores
        {
            if (AutenticarUsuario(AuthenticationCredentials))
            {
                Resultado[] valores = null;
                Manager m = new Manager(WebConfigurationManager.ConnectionStrings["StrConexionServidor"].ConnectionString);
                if (m.Pertenece(idGrupo, AuthenticationCredentials.usuario))
                    if (m.Pertenecen(idGrupo,indicadores))
                        valores = m.GetValoresLista(idGrupo,indicadores);
                return valores;

            }
            else
                return null;

        }

        [WebMethod(Description = "Devuelve los datos de todos los indicadores pedidos del grupo determinado")]
        [SoapHeader("AuthenticationCredentials")]
        public Grafico[] GetHistorialLista(string idGrupo, string[] indicadores)  //son los NOMBRES de los indicadores
        {
            if (AutenticarUsuario(AuthenticationCredentials))
            {
                Grafico[] valores = null;
                Manager m = new Manager(WebConfigurationManager.ConnectionStrings["StrConexionServidor"].ConnectionString);
                if (m.Pertenece(idGrupo, AuthenticationCredentials.usuario))
                    if (m.Pertenecen(idGrupo, indicadores))
                        valores = m.GetHistoriales(idGrupo, indicadores);
                return valores;

            }
            else
                return null;

        }

     	private bool AutenticarUsuario(AuthenticationHeader AutCred)
		{
			Manager m = new Manager(WebConfigurationManager.ConnectionStrings["StrConexionServidor"].ConnectionString);
			return m.AutenticarUsuario(AutCred.usuario, AutCred.contrasenia);
		}

        [WebMethod(Description = "Dado un indicador devuelve su grafico asociado")]
        [SoapHeader("AuthenticationCredentials")]
        public Grafico GetGrafico(string idGrupo, string nombreIndicador)
        {
            if (AutenticarUsuario(AuthenticationCredentials))
            {   Grafico g=null;
                Manager m = new Manager(WebConfigurationManager.ConnectionStrings["StrConexionServidor"].ConnectionString);
                if (m.Pertenece(idGrupo, AuthenticationCredentials.usuario))
                     g = m.GetGrafico(idGrupo, nombreIndicador);
                return g;
            }
            else
                return null;

        }

        [WebMethod(Description = "Dado un indicador devuelve su grafico asociado")]
        [SoapHeader("AuthenticationCredentials")]
        public Grafico GetHistorial(string idGrupo, string nombreIndicador)
        {
            if (AutenticarUsuario(AuthenticationCredentials))
            {
                Grafico g = null;
                Manager m = new Manager(WebConfigurationManager.ConnectionStrings["StrConexionServidor"].ConnectionString);
                if (m.Pertenece(idGrupo, AuthenticationCredentials.usuario))
                    g = m.GetHistorial(idGrupo, nombreIndicador);
                return g;
            }
            else
                return null;

        }

     
	}
}
